package com.itheima.d3_abstract;
/*
    在Java中有一个关键字叫：abstract，它就是抽象的意思，可以用它修饰类、成员方法。
    abstract修饰类，这个类就是抽象类；修饰方法，这个方法就是抽象方法。

   抽象类的注意事项、特点
        1 抽象类中不一定有抽象方法，有抽象方法的类一定是抽象类。
        2 类该有的成员（成员变量、方法、构造器）抽象类都可以有。
        3 抽象类最主要的特点：抽象类不能创建对象，仅作为一种特殊的父类，让子类继承并实现。
        4 一个类继承抽象类，必须重写完抽象类的全部抽象方法，否则这个类也必须定义成抽象类。
 */
public class Test1 {
    public static void main(String[] args) {
            //抽象类定义为多态形式
            Animal animal = new Cat();
            method(animal);

            animal = new Dog();
            method(animal);

            //抽象类不能创建对象
            //Animal a = new Animal();//报错。
    }

    public static void method( Animal animal){//传递的参数，使用多态形式
        animal.shout();
        animal.eat();
    }
}

